#include <iostream>
#include <stdio.h>
#include <time.h>
using namespace std;
void curcle_shift (int**,int ,int );
void main()
{
	srand(time(NULL));
	int line=3 , column=3;
	int **pmas=new int *[line];
	for(int i=0;i<column;i++)
	{
		pmas[i]=new int [column];
	}
	for(int i=0;i<line;i++)
	{
		for(int j=0;j<column;j++)
		{
		pmas[i][j]=rand()%10;
		cout<<pmas[i][j]<<" ";
		}
		cout<<endl;
	}
	curcle_shift(pmas,line,column);
}

void curcle_shift (int** pmas,int line,int column)
{
	int c;
	int turn;
	int num;
	cout<<"enter 1 for line 2 for column\n";
	cin>>c;
	if(c==1)
	{
	cout<<"enter 1 for up  2 for down\n";
	}
	else if(c==2)
	{
	cout<<"enter 1 for left  2 for right\n";
	}
	cin>>turn;
	cout<<"enter how many shifts you want\n";
	cin>>num;
	int **q=new int *[line];
	for(int i=0;i<line;i++)
	{
	q[i]=new int [column];
	}
	int k=0;
		switch(c)
		{
		case 1:
			{
				switch(turn)
				{ 
				case 1:
					{
						for(int i=num;i<line;i++,k++)
						{
							for(int j=0;j<column;j++)
							{
							q[k][j]=pmas[i][j];
							}
						}
						for(int i=num-1;i>=0;i--,k++)
						{
							for (int j=0; j<column; j++)
							{
								q[k][j]=pmas[i][j];
							}
						}
						for(int i=0;i<line;i++)
						{
							for (int j=0; j<column; j++)
							{
							pmas[i][j]=q[i][j];
							cout<<q[i][j]<<" ";
							}
						cout<<endl;
						}
						
						break;

					}
					
				case 2:
					{	
						
						for(int i=num;i<line;i++,k++)
						{
							for (int j=0; j<column; j++)
							{
								q[i][j]=pmas[k][j];
							}
						}
						for(int i=num-1;i>=0;i--,k++)
						{
							for(int j=0;j<column;j++)
							{
							q[i][j]=pmas[k][j];
							}
						}
						
						for(int i=0;i<line;i++)
						{
							for (int j=0; j<column; j++)
							{
							pmas[i][j]=q[i][j];
							cout<<q[i][j]<<" ";
							}
						cout<<endl;
						}
						
						break;
					}
				default:;
				}
				break;
			}

	case 2:
			{
				switch(turn)
				{ 
				case 1:
					{ 
        
				  int i=0;
				  int j;
				  
					do
					{
					for (j=num; j<column; j++)
					{
						q[i][j]=pmas[i][j];
						cout <<q[i][j] <<" ";
					}
					for (j=num-1; j>=0; j--)
					{
						q[i][j]=pmas[i][j];
						cout <<q[i][j] <<" ";
					}
					i++;
					cout <<endl;
 					}
					while (i<line);
				break;
					}
				case 2:
					{
						for(int i=0;i<line;i++)
						{
							for (int j=num,k=0; j<column; j++,k++)
							{
								q[i][j]=pmas[i][k];
							}
							
						}
						for(int i=0;i<line;i++)
						{
							for(int j=num-1,k=column-1;j>=0;j--,k--)
							{
							q[i][j]=pmas[i][k];
							}
							
						}
						
						for(int i=0;i<line;i++)
						{
							for (int j=0; j<column; j++)
							{
							pmas[i][j]=q[i][j];
							cout<<q[i][j]<<" ";
							}
						cout<<endl;
						}
						
						
					break;
					}
			}
		}
	}

		for (int i=0; i<line; i++)
		{	delete[]q[i];
			delete[]pmas[i];
		}
		delete[]q;
		delete[]pmas;
}